import uiautomator2 as u2
import time


def toggle_app_switch(d, sleep_time=2):
    """点击两次应用切换键"""
    d.keyevent('KEYCODE_APP_SWITCH')
    time.sleep(sleep_time)
    d.keyevent('KEYCODE_APP_SWITCH')
    time.sleep(sleep_time)


def click_relative(d, x_ratio, y_ratio, sleep_time=2):
    """根据相对比例点击屏幕"""
    width, height = d.window_size()
    x = width * x_ratio
    y = height * y_ratio
    print(f"点击坐标: ({x:.1f}, {y:.1f})")
    d.click(x, y)
    time.sleep(sleep_time)


def perform_common_operations(d):
    """执行通用操作流程"""
    # 底部点击操作
    click_relative(d, 0.5, 0.955, 3)

    # 应用切换操作
    toggle_app_switch(d)

    # 返回键
    d.press('back')
    time.sleep(1)

    # 点击屏幕中央
    click_relative(d, 0.5, 0.5)

    # 再次应用切换
    toggle_app_switch(d)

    # 特定位置点击
    click_relative(d, 0.5, 0.414)

    # 最后应用切换并返回主页
    toggle_app_switch(d)
    d.press('home')


def handle_app_launch(d, app_name):
    """处理单个应用的启动流程"""
    # 执行前置操作
    d(text="demo").click()
    d(text="应用跳转").click()
    d(text="搜索应用名").click()
    d.send_keys(app_name)
    time.sleep(3)

    # 尝试打开应用
    d(text="打开应用").click()
    time.sleep(2)

    # 处理权限弹窗
    if d(text="允许").exists:
        d(text="允许").click()
        time.sleep(8)


def main_flow():
    d = u2.connect()
    app_names =  ["舌尖记", "简账助手","快眠"]

    for app_name in app_names:
        handle_app_launch(d, app_name)

        if d(text="您访问的页面不见了").exists:
            toggle_app_switch(d)

            if d(text="加密").exists:
                d(text="加密").click()
                time.sleep(1)

                # 重新尝试打开应用
                d(text="打开应用").click()
                time.sleep(2)

                # 处理权限弹窗
                if d(text="允许").exists:
                    d(text="允许").click()
                    time.sleep(8)

        # 执行通用后续操作
        perform_common_operations(d)


if __name__ == "__main__":
    main_flow()